
 1000   .LIF
 1010  *SAVE S.TEST STB-128
 1020  *--------------------------------
 1030  *      TEST STB-128
 1040  *--------------------------------
 1050  YSAVE  .EQ 0
 1060  LIMIT  .EQ 1
 1070  ADDR   .EQ 2,3
 1080  BANK   .EQ 4
 1090  BYTE   .EQ 5
 1100  SCREEN .EQ 6,7
 1110  *--------------------------------
 1120  SELECT .EQ $C080
 1130  *--------------------------------
 1140  TTTT   JSR TEST
 1150         JSR TEST
 1160         JSR TEST
 1170         JSR TEST
 1180         RTS
 1190  *--------------------------------
 1200  TEST   LDA #0
 1210         STA BANK
 1220         STA ADDR
 1230         JSR $FC58    CLEAR SCREEN
 1240         LDA #$04
 1250         STA SCREEN+1
 1260         LDA #$28
 1270         STA SCREEN
 1280  *---SELECT BANK------------------
 1290  .1     LDA BANK
 1300         STA SELECT+$07
 1310         ORA #$B0     CONVERT TO SCREEN ASCII
 1320         LDY #0
 1330         STA (SCREEN),Y
 1340         LDA SELECT+$03
 1350  *---TEST D000...DFFF-------------
 1360         LDA #$E0
 1370         STA LIMIT
 1380         JSR TEST.ZEROS
 1390         JSR TEST.ONES
 1400         JSR TEST.FIVES
 1410         JSR TEST.AYES
 1420  *---SWITCH TO OTHER D000---------
 1430         LDA SELECT+$0B
 1440         LDA SELECT+$0B
 1450  *---TEST D000...FFFF-------------
 1460         LDA #0
 1470         STA LIMIT
 1480         JSR TEST.ZEROS
 1490         JSR TEST.ONES
 1500         JSR TEST.FIVES
 1510         JSR TEST.AYES
 1520  *---NEXT BANK--------------------
 1530         LDA SCREEN
 1540         EOR #$80
 1550         STA SCREEN
 1560         BMI .2
 1570         INC SCREEN+1
 1580  .2     INC BANK
 1590         LDA BANK
 1600         CMP #8
 1610         BCC .1
 1620  *---SWITCH TO ROMS---------------
 1630         LDA SELECT+$01
 1640         RTS
 1650  *--------------------------------
 1660  TEST.ZEROS
 1670         LDA #0
 1680         .HS 2C
 1690  TEST.ONES
 1700         LDA #$FF
 1710         .HS 2C
 1720  TEST.FIVES
 1730         LDA #$55
 1740         .HS 2C
 1750  TEST.AYES
 1760         LDA #$AA
 1770         STA BYTE
 1780         LDA #$D0
 1790         STA ADDR+1
 1800  .1     JSR FILL
 1810         JSR COMPARE
 1820         INC ADDR+1
 1830         LDA ADDR+1
 1840         CMP LIMIT
 1850         BNE .1
 1860         RTS
 1870  *--------------------------------
 1880  FILL   LDY #0
 1890         LDA BYTE
 1900  .1     STA (ADDR),Y
 1910         INY
 1920         BNE .1
 1930         RTS
 1940  *--------------------------------
 1950  COMPARE
 1960         LDY #0
 1970  .1     LDA (ADDR),Y
 1980         CMP BYTE
 1990         BNE .3
 2000  .2     INY
 2010         BNE .1
 2020         RTS
 2030  .3     PHA          SAVE ACTUAL DATA
 2040         STY YSAVE    SAVE Y-REG
 2050         LDA ADDR+1   PRINT ADDRESS OF FAILURE
 2060         LDY #2
 2070         JSR CONBYTE
 2080         LDA YSAVE    LO-BYTE OF ADDRESS
 2090         JSR CONBYTE
 2100         INY
 2110         LDA BYTE     WHAT DATA SHOULD HAVE BEEN
 2120         JSR CONBYTE
 2130         INY
 2140         PLA          WHAT DATA REALLY WAS
 2150         PHA          KEEP ON STACK TOO
 2160         JSR CONBYTE
 2170         INY
 2180         PLA          FIGURE WHICH BITS WERE WRONG
 2190         EOR BYTE
 2200         JSR CONBYTE
 2210         LDY #0       DELAY LOOP TO SLOW THINGS DOWN
 2220  .4     DEY          FOR OBSERVATION
 2230         BNE .4
 2240         LDY YSAVE
 2250         JMP .2       REJOIN TEST
 2260  *--------------------------------
 2270  CONBYTE
 2280         PHA
 2290         LSR
 2300         LSR
 2310         LSR
 2320         LSR
 2330         JSR CONNYBBLE
 2340         PLA
 2350  CONNYBBLE
 2360         AND #$0F
 2370         CMP #10
 2380         BCC .1
 2390         ADC #6
 2400  .1     ADC #$B0
 2410         STA (SCREEN),Y
 2420         INY
 2430         RTS
 2440  *--------------------------------

